#ifndef WORKFLOWMANAGER_H
#define WORKFLOWMANAGER_H

#include <QObject>
#include <QThread>

#include <memory>
#include <deque>

typedef int ICommand;

class WorkflowManager : public QObject
{
    Q_OBJECT

private:
    WorkflowManager();

public:
    ~WorkflowManager();

    static void Initialize();
    static void Deinitialize();

private:
    static WorkflowManager *_manager;

    std::unique_ptr<QThread> _controlThread;

    std::deque<ICommand> _commands;

signals:

private:
    void ProcessCommands();

public slots:
    void OnStarted();
};

#endif // WORKFLOWMANAGER_H
